/*************************** USERINTF.CPP ******************* AgF 2002-10-23 *
*                                                                            *
*  User interface                                                            *
*  This file specifies system-dependent input and output functions for       *
*  test programs                                                             *
*                                                                            *
*****************************************************************************/

#include <stdio.h>                     // define printf() function
#include <stdlib.h>                    // define exit() function

#if (defined (__BORLANDC__) || defined (_MSC_VER)) && ! defined(_WINDOWS_)
#include <conio.h>                   // define getch() function
#define _GETCH_DEFINED_
#endif


/***********************************************************************
                     End of program
***********************************************************************/

void EndOfProgram() {
   // This function takes care of whatever is necessary to do when the
   // program is finished

   // It may be necessary to wait for the user to press a key
   // in order to prevent the output window from disappearing.
   // Remove the #ifdef and #endif lines to unconditionally wait for a key press;
   // Remove all three lines to not wait:
   #ifdef _GETCH_DEFINED_
   getch();                             // wait for user to press a key
   #endif

   // It may be necessary to end the program with a linefeed:
   #if defined (__unix__) || defined (_MSC_VER)
   printf( "\n" );                      // end program with a linefeed
   #endif

}


/***********************************************************************
                     Error message function
***********************************************************************/

void FatalError( const char * ErrorText ) {
   // This function outputs an error message and aborts the program.

   // Important: There is no universally portable way of outputting an
   // error message. You may have to modify this function to output
   // the error message in a way that is appropriate for your system.


   // Check if FatalAppExit exists (this macro is defined in winbase.h)
   #ifdef FatalAppExit

   // in Windows, use FatalAppExit:
   FatalAppExit( 0, ErrorText );

   #else

   // in console mode, print error message
   printf ( "\n%s\n", ErrorText );
   EndOfProgram();

   #endif

   // Terminate program with error code
   exit( 1 );
}
